// 1. 封装一个函数实现字符串翻转。
// 方案一
/* let str = "abcd";
let arr = [];
function fn1(str) {
  for (key in str) {
    arr.push(str[key])
  }
  return arr.reverse().join('');
}
console.log(fn1(str)); */

// 方案二
/* let str = "abcd";
function fn(str){
  return str.split("").reverse().join("");
}
console.log(fn(str)); */

// 2. 字符串 digite = "0123456789", 把后 5 个字符分割出来，返回单字符的数组, 注意， 返回数组里面的数字是字符串类型,期望结果:['5', '6', '7', '8', '9']
// 方案一
/* let digite = "0123456789";
let arr = [];
for(key in digite){
  arr.push(digite[key]);
}
let res = arr.reverse().join('').split('',5)
console.log(res); */

// 方案二
/* let digite = "0123456789";
let res = digite.split('',digite.length).reverse().join('').split('',5);
console.log(res); */


// 3.已知有字符串 foo=”get-element-by-id”,写一个 function 将其转化成驼峰表示法”getElementById”.
/* let foo = "get-element-by-id";
function fn(str) {
  let a = str.split("-");
  let arr = []
  arr.push(a[0])

  for (let i = 1; i < a.length; i++) {
    let b = a[i][0].toUpperCase() + a[i].substr(1, str.length + 1);
    arr.push(b);
  }
  return arr.join('');
}
console.log(fn(foo)); */


// 4.定义一个函数,将"今天是什么鬼天气，这么热，明天要去游泳！"里面所有的"天"的下标输出
/* let str = "今天是什么鬼天气，这么热，明天要去游泳！";
function fn(str) {
  let arr = [];
  let ind = [];
  for (key in str) {
    arr.push(str[key])
  }
  for (let i = 0; i < str.length; i++) {
    if(arr[i] == '天') ind.push(i);
  }
  return ind;
}
console.log(fn(str)); */


// 5.定义一个函数,将"今天是什么鬼天气，这么热，明天要去游泳！"里面的所有"天"替换成"日"
/* let str = "今天是什么鬼天气，这么热，明天要去游泳！";
function fn(str) {
  for (key in str) {
    var res = str.replace('天', '日');
    str = res;
  }
  return str;
}
console.log(fn(str)); */

// 6.解析 URL Params 为对象，例如(https://www.baidu.com/s?ie=UTF-8&wd=letcode)得到{ie: 'UTF-8', wd: 'letcode', url: 'https://www.baidu.com/s'}
/* let url = "https://www.baidu.com/s?ie=UTF-8&wd=letcode";
let obj = {};
for (let key in url) {
  if (url[key] == '?') {
    let u = url.slice(0, key);
    
    let str = url.slice(key, url.length);
    let arr1 = str.slice(1, str.length).split('&');

    let arr2 = arr1.forEach(function (item) {
      let arr3 = item.split('=');
      obj[arr3[0]] = arr3[1];
    })

    obj['url'] = u;
  }
}
console.log(obj); */


// 7.查找字符串中(abbcccddddd)出现最多的字符和个数(Tips: 要先统计每个字符出现的次数)
let str = "abbcccddddd";
let obj = {};
// 统计所有字符个数
for (key in str) {
    if (obj[str[key]]) {
        obj[str[key]]++;
    }
    else {
        obj[str[key]] = 1;
    }
}

let arr = [];
let value;
// 将所有字符数量存入arr，取最大值
for (key in obj) {
    let n = obj[key];
    arr.push(n)
    // 判断当前的键值是否为最大，是则将键名与键值取出
    if (n == Math.max(...arr)) {
        value = obj[key];
        var m = key;
    }
}
console.log('出现最多的字符为：' + m, '个数为：' + value);